#include"myMenu.h"

void menu(student s[100],library *sb,int *n,int *m,int *o){
	while(1)
	{
		system("cls");
		printf("\t\t--------------------------大学教材购销管理系统--------------------------------\n");
		printf("\t\t-------------------------------1.学生用书系统---------------------------------\n");
		printf("\t\t-------------------------------2.学生购书系统---------------------------------\n");
		printf("\t\t-------------------------------3.学校补售系统---------------------------------\n");
		printf("\t\t-------------------------------0.退出-----------------------------------------\n");
		printf("\t\t-------------------------------输入序号:");
		int op;
		scanf("%d",&op);
		
		switch(op)
		{
			case 1:{
				menu1(s,n);
				break;
			}
			case 2:{
				menu2(s,sb,n,m,o);
				break;
			}
			case 3:{
				menu3(sb,m,o);
				break;
			}
			case 0:{
				return;
				break;
			}
			default :continue;
			
		}
		
	}
	
}
void menu1(student s[100],int *n){
	while(1)
	{
		menu1a(s,n);																	//学生用书的输入系统与检测	
		
		while(1)
		{
			printf("是否继续输入信息:（是填1，否填0）");
			int op1;
			scanf("%d",&op1);
			if (op1 == 0)
			{
				return ;
			}
		
			else if(op1 == 1){
				break;
			}
			else{
				printf("\t输入错误\n");
			}	
		}
	
	}
}
void menu1a(student s[100],int *n){
	
	while(1){
		int flag = 0;
		system("cls");
		printf("\t\t-------------------------------学生用书系统-------------------------------------\n");
		printf("\t\t-------------------------------输入学生信息-------------------------------------\n");
		printf("输入学生的班级信息：");
		scanf("%d",&s[(*n)].sclass);
		printf("输入学生的学号信息：");
		scanf("%d",&s[(*n)].sno);
		printf("输入学生的电话信息：");
		scanf("%d",&s[(*n)].sphone);
		printf("\t\t-------------------------------学生用书系统-------------------------------------\n");
		printf("\t\t-----------------------------输入学生书单信息-----------------------------------\n");
		printf("输入学生用书的书名信息：");
		fflush(stdin);
		scanf("%s",&s[(*n)].b.bname);
		fflush(stdin);
		printf("输入学生用书的书号信息：");
		scanf("%d",&s[(*n)].b.bno);
		printf("输入学生用书的价格信息：");
		scanf("%d",&s[(*n)].b.bmeny);
		printf("输入学生用书的出版社信息：");
		scanf("%d",&s[(*n)].b.comeout);
		int op = t_or_f();
		if(op == 1){
		
			for(int i = 0;i < (*n);i ++)													//用于检测是否有重复的学生输入
			{
				if(s[i].sclass == s[(*n)].sclass&&s[i].sno == s[(*n)].sno)
				{
					flag = 1;																//说明有重复的学生输入
				}
			}
			if(flag == 0){
				(*n) ++;
				return;
			}
			else{
				printf("\n\n\t\t-------------------------该学生已输入，请重新输入---------------------------\n\n\n");
				system("pause");
			}
			
		}
		else{
			printf("\n\n\t\t-------------------------输入已截停,请重新输入---------------------------\n\n\n");
			system("pause");
		}
		
	}
	
}
void menu2(student s[100],library *sb,int *n,int *m,int *o){
	while(1)
	{
		system("cls");
		printf("\t\t-------------------------------学生用书系统-------------------------------------\n");
		printf("\t\t--------------------------------1.身份核对--------------------------------------\n");
		printf("\t\t--------------------------------0.退出------------------------------------------\n");
		printf("\t\t-------------------------------输入序号:");
		int op2;
		scanf("%d",&op2);
		switch(op2)
		{
			case 1:{
				menu2a(s,sb,n,m,o);
				break;
			}
			case 0:{
				return;
			}
			default:continue;
		}
		
	}
	
}
void menu2a(student s[100],library *sb,int *n,int *m,int *o)
{
		
		system("cls");
		int flag=0;																		//flag用于进一步审核由于购买
		printf("请输入正确的信息:\n");
		student a;
		int qwe;
		flag = menu2b(s,&a,n);
		if(flag==5)
		{
			return;
		}
		////////////////////////////////////////////////////////////////////////////
		if(flag==2)
		{
			
			for (int i=0;i<(*m);i++)
			{
			
				if(strcmp(sb->have[i].bname,a.b.bname)==0)
				{
					
					printf("购买成功");
					flag=3;
					printf("\n\n\t\t-----------------------书单发票----------------------------");
					printf("\n\t\t书名：%s",sb->have[i].bname);
					printf("\n\t\t书号：%d",sb->have[i].bno);
					printf("\n\t\t价格：%d\n\n",sb->have[i].bmeny);
					system("pause");
					sb->have[i].number--;												//删书籍数量
					for(int j=i;j<(*m);j++)												//删书籍类型
					{
						
						if(sb->have[j].number==0)
						{
							
							sb->have[j].bno=sb->have[j+1].bno;
							strcpy(sb->have[j].bname,sb->have[j+1].bname);
							(*m)--;
							
						}
						
					}
					
				}
				
			}
			if(flag!=3)
			{
				
				printf("\n\t\t\t库存不足，请下次购买\n\n");
				system("pause");
				for(int i=0;i<(*o);i++)
				{
					if(strcmp(sb->no[i].bname,a.b.bname)==0&&sb->no[i].bno==a.b.bno)
					{
						sb->no[i].number=sb->no[i].number+1;
						qwe=9;
					}
					
				}
				
				if(qwe!=9){
					
					sb->no[(*o)].number=1;
					strcpy(sb->no[(*o)].bname,a.b.bname);
					sb->no[(*o)].bno=a.b.bno;
					sb->no[(*o)].bmeny=a.b.bmeny;
					//strcpy(sb->no[(*o)].comeout,a.b.comeout);
					(*o)++;
				}
				
				
			}
		}
		if(flag==0){
			printf("输入错误，请重新输入：");
			system("pause");
			return;
		}
	return;
}
int menu2b(student s[100],student *a,int *n)
{
	while(1)
	{
		int op;
		int flag = 0;
		printf("班级：");
		scanf("%d",&a->sclass);
		fflush(stdin);
		printf("姓名：");
		scanf("%s",&a->sname);
		fflush(stdin);
		printf("学号：");
		scanf("%d",&a->sno);
		for(int i=0;i<(*n);i++)															//审核学生信息
		{
			if(s[i].sclass==a->sclass&&s[i].sno==a->sno)
			{
				a->b.bmeny=s[i].b.bmeny;
				//strcpy(a.b.comeout,s[i].b.comeout);
					flag=1;
			}
			if(flag==1)
			{
				printf("输入要购买的书籍信息：\n");
				printf("书名：");
				scanf("%s",&a->b.bname);
				fflush(stdin);
				printf("书号：");
				scanf("%d",&a->b.bno);
				op = t_or_f();
				if(op == 1)
				{
				
					if(strcmp(a->b.bname,s[i].b.bname)==0&&a->b.bno==s[i].b.bno)
					{
						flag = 2;
						return flag;
					}
					else
					{
						flag = 5;				//原本是2，
						printf("\n\t\t\t你不可购买该书籍：\n");
						system("pause");
						return flag;
					}
					
				}
				else{
					printf("\n\n\t\t-------------------------输入已截停,请重新输入---------------------------\n\n\n");
					system("pause");
					system("cls");
				}
			}
		}
		if(flag==0){
			return flag;
		}
	}
	
}

void menu3(library *sb,int *m,int *o)											
{
	while(1){
	
		system("cls");
		printf("\t\t---------------------------------补售系统-------------------------------------\n");
		printf("\t\t--------------------------------1.查询缺书信息--------------------------------\n");
		printf("\t\t--------------------------------2.购买书籍------------------------------------\n");
		printf("\t\t--------------------------------0.退出----------------------------------------\n");
		printf("\t\t-------------------------------输入序号:");
		int op3;
		scanf("%d",&op3);
		switch(op3)
		{
			case 1:{
				menu3a(sb,o);
				break;
			}
			case 2:{
				while(1)
				{
					
					system("cls");
					printf("\t\t--------------------------------购买书籍------------------------------------\n");
					printf("\t\t\n输入书的书名：");
					scanf("%s",&sb->have[(*m)].bname);
					fflush(stdin);
					printf("\t\t\n输入书的书号：");
					scanf("%d",&sb->have[(*m)].bno);
					printf("\t\t\n输入书的数量：");
					scanf("%d",&sb->have[(*m)].number);
					int op = t_or_f();
					if(op == 1)
					{
						(*m)++;
						for(int i=0;i<(*o);i++)
						{
							for(int l=0;l<(*m);l++)
							{
								
								if(sb->have[l].bno==sb->no[i].bno&&strcmp(sb->have[l].bname,sb->no[i].bname)==0&&sb->have[l].number>=sb->no[i].number)
								{
									for(int j=i;j<(*o);j++)
									{
										
										sb->no[j].bno=sb->no[j+1].bno;
										strcpy(sb->no[j].bname,sb->no[j+1].bname);
										(*o)--;
									}
								
								}
								else if(sb->have[l].bno==sb->no[i].bno&&strcmp(sb->have[l].bname,sb->no[i].bname)==0&&sb->have[l].number<sb->no[i].number)
								{
									sb->no[i].number=sb->no[i].number-sb->have[l].number;
									
								}
								
							}
							
						}
						printf("购买完成；；\n");
						system("pause");
					}
					else{
						printf("\n\n\t\t-------------------------输入已截停,请重新输入---------------------------\n\n\n");
						continue;
					}
					//补差值（书籍）
					break;
					
				}
				
			}
			case 0:return;
			default:continue;
		}
	
	}
	
}
void menu3a(library *sb,int *o)
{
	while(1)
	{
		int flag = 0;
		system("cls");
		printf("\t\t-----------------------------------查询缺书信息----------------------------------\n");
		printf("\t\t---------------------------------1.输出全部缺书信息------------------------------\n");
		printf("\t\t---------------------------------2.按书名查询信息--------------------------------\n");
		printf("\t\t---------------------------------3.按书号查询信息--------------------------------\n");
		printf("\t\t---------------------------------0.退出--------------------------------\n");
		printf("\t\t-------------------------------输入序号:");
		int op;
		scanf("%d",&op);
		switch(op)
		{
			case 0:return;
			case 1:{
				system("cls");
				printf("\t\t缺少书籍的信息：\n");
				if((*o)==0)
				{
					printf("\t\t无缺少书籍\n");

				}else{
					for(int i=0;i<(*o);i++)
					{
						printf("缺少的第%d本书的信息：\n",i+1);
						printf("书号：%d\n",sb->no[i].bno);
						printf("书名：%s\n",sb->no[i].bname);
						printf("价格：%d\n",sb->no[i].bmeny);
						//printf("出版社：%s\n",sb->no[i].comeout);
						printf("该书缺少数量为：%d\n",sb->no[i].number);
						
						
					}
				}
				system("pause");
				break;
			}
			case 2:{
				
				system("cls");
				printf("输入要查询的书名：\n");
				char b[12];
				scanf("%s",&b);	
				printf("\t\t缺少书籍的信息：\n");
				
				if((*o)==0)
				{
					printf("\t\t无缺少书籍\n");
	
				}else{
					for(int i=0;i<(*o);i++)
					{
						if(strcmp(sb->no[i].bname,b) == 0)
						{
							printf("该书的信息：\n");
							printf("书号：%d\n",sb->no[i].bno);
							printf("书名：%s\n",sb->no[i].bname);
							printf("价格：%d\n",sb->no[i].bmeny);
							//printf("出版社：%s\n",sb->no[i].comeout);
							printf("该书缺少数量为：%d\n",sb->no[i].number);
							
							flag++;
						}
						
					}
					if(flag == 0)
					{
						printf("\n\n\t\t-------------------------查无此书-----------------------------\n");
					}
				}
				system("pause");
				break;
			}
			case 3:{
				system("cls");
				printf("输入要查询的书号：\n");
				int x;
				scanf("%d",&x);	
				printf("\t\t缺少书籍的信息：\n");
				
				if((*o)==0)
				{
					printf("\t\t无缺少书籍\n");
					
				}else{
					for(int i=0;i<(*o);i++)
					{
						if(sb->no[i].bno == x)
						{
							printf("该书的信息：\n");
							printf("书号：%d\n",sb->no[i].bno);
							printf("书名：%s\n",sb->no[i].bname);
							printf("价格：%d\n",sb->no[i].bmeny);
							//printf("出版社：%s\n",sb->no[i].comeout);
							printf("该书缺少数量为：%d\n",sb->no[i].number);
							
							flag++;
						}
						
					}
					if(flag == 0)
					{
						printf("\n\n\t\t-------------------------查无此书-----------------------------\n");
					}
				}
				system("pause");
				break;
			}
				
		}
		
		
	}
}

int t_or_f()
{
	while(1)
	{
		int flag;
		printf("\n\t\t--------------------------------1.确认执行----------------------------------------");
		printf("\n\t\t--------------------------------0.重新执行----------------------------------------");
		printf("\n\t\t---------------------------------输入序号:");
		scanf("%d",&flag);
		switch(flag)
		{
			case 1:return flag;
			case 0:return flag;
			default:{
				printf("\n\t\t------------------------------输入错误，请重新输入--------------------------------------");
				system("pause");
				continue;
			}
		}
	}
}


